package cuentasPagar;

import conexion.CConexion;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.table.DefaultTableModel;

public class CCxp100 extends CConexion {

    private String compania = null;

    public CCxp100() {
        super();
        compania = login.getCompaniaActual();

    }
    
    public ResultSet buscarCuentasPagar(String sucursal, String tipoDocumento, String numeroDocumento) throws SQLException {
        Statement stncBuscarCuentasCobrar = this.getConexion().createStatement();
        String sqlBuscarCuentasCobrar = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100alma = '" + sucursal + "' and cxp100tido = '" + tipoDocumento + "' and cxp100nodo = '" + numeroDocumento + "'";
        ResultSet rsBuscarCuentasCobrar = stncBuscarCuentasCobrar.executeQuery(sqlBuscarCuentasCobrar);
        return rsBuscarCuentasCobrar;
    }
    
    

    public ResultSet buscarCuentasPagar(DefaultTableModel tabla, int rowTable1, int band) throws SQLException {
        Statement stncBuscarCuentasCobrar = this.getConexion().createStatement();
        String sqlBuscarCuentasCobrar = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100copr = '" + tabla.getValueAt(rowTable1, 0) + "' and cxp100sald != 0 order by cxp100fech";
        ResultSet rsBuscarCuentasCobrar = stncBuscarCuentasCobrar.executeQuery(sqlBuscarCuentasCobrar);
        return rsBuscarCuentasCobrar;
    }

    public ResultSet buscarCuenta(String noco) throws SQLException {
        Statement stncBuscarCuenta = this.getConexion().createStatement();
        ResultSet rsBuscarCuenta = null;
        String sqlBuscarCuenta = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100noco='" + noco + "'";
        rsBuscarCuenta = stncBuscarCuenta.executeQuery(sqlBuscarCuenta);
        return rsBuscarCuenta;
    }

    public ResultSet buscarCuentaPorNodo(String nodo) throws SQLException {
        Statement stncBuscarCuenta = this.getConexion().createStatement();
        ResultSet rsBuscarCuenta = null;
        String sqlBuscarCuenta = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100nodo='" + nodo + "'";
        rsBuscarCuenta = stncBuscarCuenta.executeQuery(sqlBuscarCuenta);
        return rsBuscarCuenta;
    }

    public ResultSet busquedaAvanzada(DefaultTableModel modeloTblCuentasCobrar, int rowTable2) throws SQLException {
        Statement stncBusquedaAvanzada = this.getConexion().createStatement();
        String sqlBusquedaAvanzada = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100alma = '" + (String) modeloTblCuentasCobrar.getValueAt(rowTable2, 5) + "' and cxp100tido = '" + (String) modeloTblCuentasCobrar.getValueAt(rowTable2, 0) + "' and cxp100nodo = '" + (String) modeloTblCuentasCobrar.getValueAt(rowTable2, 6) + "'";
        ResultSet rsBusquedaAvanzada = null;
        rsBusquedaAvanzada = stncBusquedaAvanzada.executeQuery(sqlBusquedaAvanzada);
        rsBusquedaAvanzada.next();
        return rsBusquedaAvanzada;
    }

    public ResultSet buscarCuentasPagarXProveedor(String codigoProveedor) throws SQLException {
        String sqlPorPorveedore = "select cxp100alma,cxp100tido,cxp100nodo,cxp100fech,cxp100comp,cxp100des,cxp100vado,cxp100sald from cxp100 where cxp100nocia = '" + compania + "' AND cxp100sald < 0 AND cxp100copr = '" + codigoProveedor + "' ORDER BY cxp100nodo";
        Statement stncPorPorveedore = this.getConexion().createStatement();
        ResultSet rsPorPorveedore = stncPorPorveedore.executeQuery(sqlPorPorveedore);
        return rsPorPorveedore;
    }

    public void cxp100(String nocia, String alma, String tido, String nodo, String noco,
            String nos1, String nos2, String comp, String auto,
            String nor1, String nor2, String nore, String noas, String fech, String cadu,
            int copr, String descri, String mone, String ticr,
            int plaz, double sniv, double saiv, double tiva,
            double tice, double tofa, double valo, String timo,
            String coco, String obs1, String obs2,
            double inmo, double gaju, String usuario) throws SQLException {

        CallableStatement prcProcedimientoAlmacenado = this.getConexion().prepareCall("{ call actualiza_cxp(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
        prcProcedimientoAlmacenado.setString("nocia", nocia);
        prcProcedimientoAlmacenado.setString("alma", alma);
        prcProcedimientoAlmacenado.setString("tido", tido);
        prcProcedimientoAlmacenado.setInt("nodo", Integer.parseInt(nodo));
        prcProcedimientoAlmacenado.setInt("noco", Integer.parseInt(noco));
        prcProcedimientoAlmacenado.setString("nos1", nos1);
        prcProcedimientoAlmacenado.setString("nos2", nos2);
        prcProcedimientoAlmacenado.setString("comp", comp);
        prcProcedimientoAlmacenado.setString("auto", auto);
        prcProcedimientoAlmacenado.setString("nor1", nor1);
        prcProcedimientoAlmacenado.setString("nor2", nor2);
        prcProcedimientoAlmacenado.setString("nore", nore);
        prcProcedimientoAlmacenado.setString("noas", noas);
        prcProcedimientoAlmacenado.setString("fech", fech);
        prcProcedimientoAlmacenado.setString("cadu", cadu);
        prcProcedimientoAlmacenado.setInt("copr", copr);
        prcProcedimientoAlmacenado.setString("descri", descri);
        prcProcedimientoAlmacenado.setString("mone", mone);
        prcProcedimientoAlmacenado.setString("ticr", ticr);
        prcProcedimientoAlmacenado.setInt("plaz", plaz);
        prcProcedimientoAlmacenado.setDouble("sniv", sniv);
        prcProcedimientoAlmacenado.setDouble("saiv", saiv);
        prcProcedimientoAlmacenado.setDouble("tiva", tiva);
        prcProcedimientoAlmacenado.setDouble("tice", tice);
        prcProcedimientoAlmacenado.setDouble("tofa", tofa);
        prcProcedimientoAlmacenado.setDouble("valo", valo);
        prcProcedimientoAlmacenado.setString("timo", timo);
        prcProcedimientoAlmacenado.setString("coco", coco);
        prcProcedimientoAlmacenado.setString("obs1", obs1);
        prcProcedimientoAlmacenado.setString("obs2", obs2);
        prcProcedimientoAlmacenado.setDouble("inmo", inmo);
        prcProcedimientoAlmacenado.setDouble("gaju", gaju);
        prcProcedimientoAlmacenado.setString("usuario", usuario);
        prcProcedimientoAlmacenado.execute();
        //con.commit();
    }

    public void anular(String alma, String tido, String nodo, String valo) throws SQLException {
        String sqlBuscarCxp101 = "select * from cxp101 where cxp101nocia = '" + compania + "' and cxp101alma = '" + alma + "' and cxp101tido = '" + tido + "' and cxp101nodo = '" + nodo + "' and cxp101valo = '" + valo + "' and cxp101nose != 1";
        Statement stncBuscarCxp101 = this.getConexion().createStatement();
        ResultSet rsBuscarCxp101 = stncBuscarCxp101.executeQuery(sqlBuscarCxp101);
        int nosemayor = 1;
        while (rsBuscarCxp101.next()) {
            int aux = rsBuscarCxp101.getInt("cxp101nose");
            if (nosemayor < aux) {
                nosemayor = aux;
            }
        }
        rsBuscarCxp101.close();
        stncBuscarCxp101.close();
        String sqlDeleteCxp101 = "delete from cxp101 where cxp101nocia = '" + compania + "' and cxp101alma = '" + alma + "' and cxp101tido = '" + tido + "' and cxp101nodo = '" + nodo + "' and cxp101nose = '" + nosemayor + "'";
        Statement stncDeleteCxp100 = this.getConexion().createStatement();
        stncDeleteCxp100.execute(sqlDeleteCxp101);
        stncDeleteCxp100.close();
        String sqlBuscarCxp100 = "select * from cxp100 where cxp100nocia = '" + compania + "' and cxp100alma = '" + alma + "' and cxp100tido = '" + tido + "' and cxp100nodo = '" + nodo + "'";
        Statement stncBuscarCxp100 = this.getConexion().createStatement();
        ResultSet rsBuscarCxp100 = stncBuscarCxp100.executeQuery(sqlBuscarCxp100);
        rsBuscarCxp100.next();
        double cxp100saldo = rsBuscarCxp100.getDouble("cxp100sald") + Double.valueOf(valo) * -1;
        rsBuscarCxp100.close();
        stncBuscarCxp100.close();
        String sqlUpCxp100 = "update cxp100 set cxp100sald = '" + cxp100saldo + "' where cxp100nocia = '" + compania + "' and cxp100alma = '" + alma + "' and cxp100tido = '" + tido + "' and cxp100nodo = '" + nodo + "'";
        Statement stncUpCxp100 = this.getConexion().createStatement();
        stncUpCxp100.executeUpdate(sqlUpCxp100);
        stncUpCxp100.close();
    }
}
